package studio.servletArmado;

import java.io.IOException;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Collection;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.sun.org.apache.xalan.internal.xsltc.compiler.util.NumberType;

import studio.excepcion.DAOExcepcion;
import studio.modelo.Administrador;
import studio.modelo.Armado;
import studio.modelo.SerBasico;
import studio.modelo.Servicio;
import studio.modelo.TipoRecurso;
import studio.negocio.SeguridadInstrumento;

/**
 * Servlet implementation class RegServArmado
 */
public class RegServArmado extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public RegServArmado() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		HttpSession sesion = request.getSession();
		Administrador objAdm=(Administrador)sesion.getAttribute("Admin_Actual");
		if (objAdm==null)
		{
			response.sendRedirect("Login.jsp");
		}
		else
		{
			int idServSelec=Integer.parseInt(request.getParameter("servi"));
			double Costo=Double.parseDouble(request.getParameter("precio"));
			int cantidad =Integer.parseInt(request.getParameter("canti"));
			int idTipoRec=Integer.parseInt(request.getParameter("recurso"));
			Armado objArmadoSesion=(Armado)sesion.getAttribute("Armado");
			SeguridadInstrumento sgInt_1=new SeguridadInstrumento();
			if (objArmadoSesion != null)
				{
					Collection<SerBasico> lstServicio = new ArrayList<SerBasico>();
					lstServicio=objArmadoSesion.getSerbasicos();
					
					int contador=0;
					
					for (SerBasico objBasico : lstServicio) {
						System.out.println(objBasico.objServicio.getIdServicio() +" :"+idServSelec +" - "+ objBasico.objTipRecur.getIdTipoRecurso() + ":"+idTipoRec);
						
						if ((objBasico.objServicio.getIdServicio()==idServSelec) && (objBasico.objTipRecur.getIdTipoRecurso()==idTipoRec ) )
						{
							int cant=0;
							cant=objBasico.getQtSer() + cantidad;
							objBasico.setQtSer(cant);
							double importe=0;
													
							importe=objBasico.getCostoxHora() * cant;
							DecimalFormat formateador = new DecimalFormat("###0.##");
							try {
								importe=formateador.parse(formateador.format(importe)).doubleValue();
							} catch (ParseException e) {
								// TODO Auto-generated catch block
								e.printStackTrace();
							}
							//(formateador.Format(importe)). DoubleValue();
							objBasico.setImporte(importe);
							contador++;
						}
					}
					if (contador==0)
					{
						SerBasico objServ_1= new SerBasico();
						TipoRecurso recurso = new TipoRecurso();
						Servicio serv= new Servicio();
						try {
							recurso=sgInt_1.RetornaTipoRecurso(idTipoRec);
							serv=sgInt_1.RetornServicio(idServSelec);
							objServ_1.setObjTipRecur(recurso);
							objServ_1.setObjServicio(serv);
							objServ_1.setQtSer(cantidad);
							objServ_1.setCostoxHora(Costo);
							objServ_1.setImporte(Costo * cantidad);
							lstServicio.add(objServ_1);
							objArmadoSesion.setSerbasicos(lstServicio);
							sesion.setAttribute("Armado", objArmadoSesion);
							response.sendRedirect("ArmadoSala.jsp");
							} catch (DAOExcepcion e) {
								e.printStackTrace();
							}
					}
					else
					{
						objArmadoSesion.setSerbasicos(lstServicio);
						sesion.setAttribute("Armado", objArmadoSesion);
						response.sendRedirect("ArmadoSala.jsp");
					}
				}
			else
				{
				Armado armadoNuevo= new Armado();
				armadoNuevo.setObjAdmin(objAdm);
				
				Collection<SerBasico> lstServicioNuevo = new ArrayList<SerBasico>();
				
				SerBasico objServ_1Nuevo= new SerBasico();
				TipoRecurso recursoNuevo = new TipoRecurso();
				Servicio servNuevo= new Servicio();
				try {
					recursoNuevo=sgInt_1.RetornaTipoRecurso(idTipoRec);
					servNuevo=sgInt_1.RetornServicio(idServSelec);
					objServ_1Nuevo.setObjTipRecur(recursoNuevo);
					objServ_1Nuevo.setObjServicio(servNuevo);
					objServ_1Nuevo.setQtSer(cantidad);
					objServ_1Nuevo.setCostoxHora(Costo);
					objServ_1Nuevo.setImporte(Costo * cantidad);
					lstServicioNuevo.add(objServ_1Nuevo);
					armadoNuevo.setSerbasicos(lstServicioNuevo);
					sesion.setAttribute("Armado", armadoNuevo);
					response.sendRedirect("ArmadoSala.jsp");
				} catch (DAOExcepcion e) {
					e.printStackTrace();
				}
				
				}
			}	
		}

}
